Tarea consultas base de datos desde python#
Crear la tabla nombrada: employees#
import psycopg2
from psycopg2 import Error
# Definir la conexión
try:
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
# Comandos SQL para crear la tabla y los índices
create_table_query = '''CREATE TABLE employees
(employee_id SERIAL PRIMARY KEY,
first_name VARCHAR(20),
last_name VARCHAR(25),
email VARCHAR(25),
phone_number VARCHAR(20),
hire_date DATE,
job_id VARCHAR(10),
salary NUMERIC(8,2),
commission_pct NUMERIC(2,2),
manager_id INTEGER,
department_id INTEGER);'''
create_unique_index_query = '''CREATE UNIQUE INDEX emp_emp_id_pk
ON employees (employee_id);'''
# Ejecutar los comandos SQL
cursor.execute(create_table_query)
cursor.execute(create_unique_index_query)
# Confirmar los cambios
connection.commit()
print("Tabla y índices creados exitosamente")
except (Exception, Error) as error:
print("Error al ejecutar los comandos SQL:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
Error al ejecutar los comandos SQL: relation "employees" already exists
Conexión PostgreSQL cerrada
import psycopg2
from psycopg2 import Error
try:
# Establecer conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
# Consulta para seleccionar las primeras 10 filas de la tabla employees
select_query = '''SELECT * FROM employees LIMIT 10;'''
# Ejecutar la consulta y gurdar los resultados en el objeto "records"
cursor.execute(select_query)
records = cursor.fetchall()
print("Primeras 10 filas de la tabla employees:")
for row in records:
print(row)
# Consulta para contar el número total de filas en la tabla employees
count_query = '''SELECT count(1) FROM employees;'''
# Ejecutar la consulta de conteo
cursor.execute(count_query)
# guardar el resultado en el objeto count
count = cursor.fetchone()[0]
print("\nTotal de filas en la tabla employees:", count)
except (Exception, Error) as error:
print("Error al ejecutar las consultas SQL:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
Primeras 10 filas de la tabla employees:
Total de filas en la tabla employees: 0
Conexión PostgreSQL cerrada
crear la tabla courses#
import psycopg2
from psycopg2 import Error
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
# Comando SQL para crear la tabla courses
create_table_query = '''CREATE TABLE courses
(course_id SERIAL PRIMARY KEY,
course_name VARCHAR(60),
course_author VARCHAR(40),
course_status VARCHAR(10) CHECK (course_status IN ('published', 'draft', 'inactive')),
course_published_dt DATE);'''
# Ejecutar el comando SQL
cursor.execute(create_table_query)
connection.commit()
print("Tabla 'courses' creada exitosamente")
except (Exception, Error) as error:
print("Error al ejecutar el comando SQL:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
Error al ejecutar el comando SQL: relation "courses" already exists
Conexión PostgreSQL cerrada
Insertar datos a tabla Courses#
import psycopg2
from psycopg2 import Error
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
# Datos a insertar
data = [
("Programming using Python", "Bob Dillon", "published", "2020-09-30"),
("Data Engineering using Python", "Bob Dillon", "published", "2020-07-15"),
("Data Engineering using Scala", "Elvis Presley", "draft", None),
("Programming using Scala", "Elvis Presley", "published", "2020-05-12"),
("Programming using Java", "Mike Jack", "inactive", "2020-08-10"),
("Web Applications - Python Flask", "Bob Dillon", "inactive", "2020-07-20"),
("Web Applications - Java Spring", "Mike Jack", "draft", None),
("Pipeline Orchestration - Python", "Bob Dillon", "draft", None),
("Streaming Pipelines - Python", "Bob Dillon", "published", "2020-10-05"),
("Web Applications - Scala Play", "Elvis Presley", "inactive", "2020-09-30"),
("Web Applications - Python Django", "Bob Dillon", "published", "2020-06-23"),
("Server Automation - Ansible", "Uncle Sam", "published", "2020-07-05")
]
# Insertar los datos en la tabla
for row in data:
# Comando SQL para insertar datos en la tabla courses
insert_query = '''INSERT INTO courses (course_name, course_author, course_status, course_published_dt)
VALUES (%s, %s, %s, %s);'''
# Insertar los datos de cada fila en la tabla
cursor.execute(insert_query, row)
# Confirmar los cambios
connection.commit()
print("Datos insertados en la tabla 'courses' exitosamente")
except (Exception, Error) as error:
print("Error al insertar datos en la tabla 'courses':", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
Datos insertados en la tabla 'courses' exitosamente
Conexión PostgreSQL cerrada
Borre todos los cursos que no estén en modo borrador ni publicados. Proporcione la sentencia de borrado como respuesta para este ejercicio en el Jupyter Book. Para validar, obtenga el recuento de todos los cursos publicados por autor y asegúrese de que la salida está ordenada en forma descendente por recuento.#
import psycopg2
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
print("Conexión exitosa a PostgreSQL")
# Sentencia de borrado
delete_query = "DELETE FROM courses WHERE course_status NOT IN ('draft', 'published');"
cursor.execute(delete_query)
connection.commit()
print("Cursos eliminados exitosamente")
# Consulta para obtener el recuento de cursos publicados por autor
select_query = '''
SELECT course_author, COUNT(*) AS count_published_courses
FROM courses
WHERE course_status = 'published'
GROUP BY course_author
ORDER BY count_published_courses DESC;
'''
cursor.execute(select_query)
records = cursor.fetchall()
print("Recuento de cursos publicados por autor:")
for row in records:
print("Autor:", row[0], "- Cursos publicados:", row[1])
except (Exception, psycopg2.Error) as error:
print("Error:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
Conexión exitosa a PostgreSQL
Cursos eliminados exitosamente
Recuento de cursos publicados por autor:
Autor: Bob Dillon - Cursos publicados: 64
Autor: Uncle Sam - Cursos publicados: 16
Autor: Elvis Presley - Cursos publicados: 16
Conexión PostgreSQL cerrada
Crear la base de datos users#
import psycopg2
from psycopg2 import Error
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
print("Conexión exitosa a PostgreSQL")
# Crear la tabla users si no existe
create_table_query = '''
CREATE TABLE IF NOT EXISTS users (
user_id SERIAL PRIMARY KEY,
user_first_name VARCHAR(30),
user_last_name VARCHAR(30),
user_email_id VARCHAR(50),
user_gender VARCHAR(1),
user_unique_id VARCHAR(15),
user_phone_no VARCHAR(20),
user_dob DATE,
created_ts TIMESTAMP
);
'''
cursor.execute(create_table_query)
connection.commit()
print("Tabla 'users' creada exitosamente")
except (Exception, psycopg2.Error) as error:
print("Error al conectar a PostgreSQL:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
Conexión exitosa a PostgreSQL
Tabla 'users' creada exitosamente
Conexión PostgreSQL cerrada
Insertar los valores en la anterior tabla#
import psycopg2
from psycopg2 import Error
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
print("Conexión exitosa a PostgreSQL")
# Consulta de inserción
insert_query = """
INSERT INTO users (
user_first_name, user_last_name, user_email_id, user_gender,
user_unique_id, user_phone_no, user_dob, created_ts
) VALUES (%s, %s, %s, %s, %s, %s, %s, %s);
"""
# Datos a insertar
data_to_insert = [
('Giuseppe', 'Bode', 'gbode0@imgur.com', 'M', '88833-8759', '+86 (764) 443-1967', '1973-05-31', '2018-04-15 12:13:38'),
('Lexy', 'Gisbey', 'lgisbey1@mail.ru', 'F', '262501-029', '+86 (751) 160-3742', '2003-05-31', '2020-12-29 06:44:09'),
('Karel', 'Claringbold', 'kclaringbold2@yale.edu', 'F', '391-33-2823', '+62 (445) 471-2682', '1985-11-28', '2018-11-19 00:04:08'),
('Marv', 'Tanswill', 'mtanswill3@dedecms.com', 'F', '1195413-80', '+62 (497) 736-6802', '1998-05-24', '2018-11-19 16:29:43'),
('Gertie', 'Espinoza', 'gespinoza4@nationalgeographic.com', 'M', '471-24-6869', '+249 (687) 506-2960', '1997-10-30', '2020-01-25 21:31:10'),
('Saleem', 'Danneil', 'sdanneil5@guardian.co.uk', 'F', '192374-933', '+63 (810) 321-0331', '1992-03-08', '2020-11-07 19:01:14'),
('Rickert', 'O''Shiels', 'roshiels6@wikispaces.com', 'M', '749-27-47-52', '+86 (184) 759-3933', '1972-11-01', '2018-03-20 10:53:24'),
('Cybil', 'Lissimore', 'clissimore7@pinterest.com', 'M', '461-75-4198', '+54 (613) 939-6976', '1978-03-03', '2019-12-09 14:08:30'),
('Melita', 'Rimington', 'mrimington8@mozilla.org', 'F', '892-36-676-2', '+48 (322) 829-8638', '1995-12-15', '2018-04-03 04:21:33'),
('Benetta', 'Nana', 'bnana9@google.com', 'M', '197-54-1646', '+420 (934) 611-0020', '1971-12-07', '2018-10-17 21:02:51'),
('Gregorius', 'Gullane', 'ggullanea@prnewswire.com', 'F', '232-55-52-58', '+62 (780) 859-1578', '1973-09-18', '2020-01-14 23:38:53'),
('Una', 'Glayzer', 'uglayzerb@pinterest.com', 'M', '898-84-336-6', '+380 (840) 437-3981', '1983-05-26', '2019-09-17 03:24:21'),
('Jamie', 'Vosper', 'jvosperc@umich.edu', 'M', '247-95-68-44', '+81 (205) 723-1942', '1972-03-18', '2020-07-23 16:39:33'),
('Calley', 'Tilson', 'ctilsond@issuu.com', 'F', '415-48-894-3', '+229 (698) 777-4904', '1987-06-12', '2020-06-05 12:10:50'),
('Peadar', 'Gregorowicz', 'pgregorowicze@omniture.com', 'M', '403-39-5-869', '+7 (267) 853-3262', '1996-09-21', '2018-05-29 23:51:31'),
('Jeanie', 'Webling', 'jweblingf@booking.com', 'F', '399-83-05-03', '+351 (684) 413-0550', '1994-12-27', '2018-02-09 01:31:11'),
('Yankee', 'Jelf', 'yjelfg@wufoo.com', 'F', '607-99-0411', '+1 (864) 112-7432', '1988-11-13', '2019-09-16 16:09:12'),
('Blair', 'Aumerle', 'baumerleh@toplist.cz', 'F', '430-01-578-5', '+7 (393) 232-1860', '1979-11-09', '2018-10-28 19:25:35'),
('Pavlov', 'Steljes', 'psteljesi@macromedia.com', 'F', '571-09-6181', '+598 (877) 881-3236', '1991-06-24', '2020-09-18 05:34:31'),
('Darn', 'Hadeke', 'dhadekej@last.fm', 'M', '478-32-02-87', '+370 (347) 110-4270', '1984-09-04', '2018-02-10 12:56:00'),
('Wendell', 'Spanton', 'wspantonk@de.vu', 'F', None, '+84 (301) 762-1316', '1973-07-24', '2018-01-30 01:20:11'),
('Carlo', 'Yearby', 'cyearbyl@comcast.net', 'F', None, '+55 (288) 623-4067', '1974-11-11', '2018-06-24 03:18:40'),
('Sheila', 'Evitts', 'sevittsm@webmd.com', None, '830-40-5287', None, '1977-03-01', '2020-07-20 09:59:41'),
('Sianna', 'Lowdham', 'slowdhamn@stanford.edu', None, '778-0845', None, '1985-12-23', '2018-06-29 02:42:49'),
('Phylys', 'Aslie', 'paslieo@qq.com', 'M', '368-44-4478', '+86 (765) 152-8654', '1984-03-22', '2019-10-01 01:34:28')
]
# Ejecutar la consulta de inserción
cursor.executemany(insert_query, data_to_insert)
connection.commit()
print("Datos insertados exitosamente en la tabla 'users'")
except (Exception, psycopg2.Error) as error:
print("Error al conectar a PostgreSQL:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
Conexión exitosa a PostgreSQL
Datos insertados exitosamente en la tabla 'users'
Conexión PostgreSQL cerrada
Obtenga el número de usuarios creados por año. Utilice la tabla de usuarios para este ejercicio.#
import psycopg2
from psycopg2 import Error
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
# Consulta SQL
sql_query = """
SELECT DATE_TRUNC('year', created_ts) AS created_year,
COUNT(*) AS user_count
FROM users
GROUP BY created_year
ORDER BY created_year ASC;
"""
# Ejecutar la consulta
cursor.execute(sql_query)
# Obtener los resultados
results = cursor.fetchall()
# Imprimir los resultados
print("Año de creación\t\tNúmero de usuarios")
print("-----------------------------------------")
for row in results:
print(f"{row[0].strftime('%Y')}\t\t\t{row[1]}")
except (Exception, psycopg2.Error) as error:
print("Error al conectar a PostgreSQL:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
Año de creación Número de usuarios
-----------------------------------------
2018 208
2019 64
2020 128
Conexión PostgreSQL cerrada
Obtenga los días de nacimiento de todos los usuarios nacidos en el mes May.#
import psycopg2
from psycopg2 import Error
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
# Consulta SQL
sql_query = """
SELECT user_id,
user_dob,
user_email_id,
TO_CHAR(user_dob, 'FMDay') AS user_day_of_birth
FROM users
WHERE EXTRACT(MONTH FROM user_dob) = 5
ORDER BY EXTRACT(DAY FROM user_dob);
"""
# Ejecutar la consulta
cursor.execute(sql_query)
# Obtener los resultados
results = cursor.fetchall()
# Imprimir los resultados
print("ID de Usuario\t\tFecha de Nacimiento\t\tCorreo Electrónico\t\tDía de Nacimiento")
print("-----------------------------------------------------------------------------------------------")
for row in results:
print(f"{row[0]}\t\t{row[1]}\t{row[2]}\t{row[3]}")
except (Exception, psycopg2.Error) as error:
print("Error al conectar a PostgreSQL:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
ID de Usuario Fecha de Nacimiento Correo Electrónico Día de Nacimiento
-----------------------------------------------------------------------------------------------
4 1998-05-24 mtanswill3@dedecms.com Sunday
204 1998-05-24 mtanswill3@dedecms.com Sunday
104 1998-05-24 mtanswill3@dedecms.com Sunday
229 1998-05-24 mtanswill3@dedecms.com Sunday
54 1998-05-24 mtanswill3@dedecms.com Sunday
254 1998-05-24 mtanswill3@dedecms.com Sunday
129 1998-05-24 mtanswill3@dedecms.com Sunday
279 1998-05-24 mtanswill3@dedecms.com Sunday
29 1998-05-24 mtanswill3@dedecms.com Sunday
304 1998-05-24 mtanswill3@dedecms.com Sunday
154 1998-05-24 mtanswill3@dedecms.com Sunday
329 1998-05-24 mtanswill3@dedecms.com Sunday
79 1998-05-24 mtanswill3@dedecms.com Sunday
354 1998-05-24 mtanswill3@dedecms.com Sunday
179 1998-05-24 mtanswill3@dedecms.com Sunday
379 1998-05-24 mtanswill3@dedecms.com Sunday
387 1983-05-26 uglayzerb@pinterest.com Thursday
12 1983-05-26 uglayzerb@pinterest.com Thursday
37 1983-05-26 uglayzerb@pinterest.com Thursday
212 1983-05-26 uglayzerb@pinterest.com Thursday
87 1983-05-26 uglayzerb@pinterest.com Thursday
112 1983-05-26 uglayzerb@pinterest.com Thursday
312 1983-05-26 uglayzerb@pinterest.com Thursday
237 1983-05-26 uglayzerb@pinterest.com Thursday
187 1983-05-26 uglayzerb@pinterest.com Thursday
62 1983-05-26 uglayzerb@pinterest.com Thursday
162 1983-05-26 uglayzerb@pinterest.com Thursday
262 1983-05-26 uglayzerb@pinterest.com Thursday
362 1983-05-26 uglayzerb@pinterest.com Thursday
137 1983-05-26 uglayzerb@pinterest.com Thursday
337 1983-05-26 uglayzerb@pinterest.com Thursday
287 1983-05-26 uglayzerb@pinterest.com Thursday
251 1973-05-31 gbode0@imgur.com Thursday
2 2003-05-31 lgisbey1@mail.ru Saturday
26 1973-05-31 gbode0@imgur.com Thursday
27 2003-05-31 lgisbey1@mail.ru Saturday
51 1973-05-31 gbode0@imgur.com Thursday
52 2003-05-31 lgisbey1@mail.ru Saturday
76 1973-05-31 gbode0@imgur.com Thursday
77 2003-05-31 lgisbey1@mail.ru Saturday
101 1973-05-31 gbode0@imgur.com Thursday
102 2003-05-31 lgisbey1@mail.ru Saturday
126 1973-05-31 gbode0@imgur.com Thursday
127 2003-05-31 lgisbey1@mail.ru Saturday
151 1973-05-31 gbode0@imgur.com Thursday
152 2003-05-31 lgisbey1@mail.ru Saturday
176 1973-05-31 gbode0@imgur.com Thursday
177 2003-05-31 lgisbey1@mail.ru Saturday
201 1973-05-31 gbode0@imgur.com Thursday
202 2003-05-31 lgisbey1@mail.ru Saturday
226 1973-05-31 gbode0@imgur.com Thursday
227 2003-05-31 lgisbey1@mail.ru Saturday
1 1973-05-31 gbode0@imgur.com Thursday
252 2003-05-31 lgisbey1@mail.ru Saturday
276 1973-05-31 gbode0@imgur.com Thursday
277 2003-05-31 lgisbey1@mail.ru Saturday
301 1973-05-31 gbode0@imgur.com Thursday
302 2003-05-31 lgisbey1@mail.ru Saturday
326 1973-05-31 gbode0@imgur.com Thursday
327 2003-05-31 lgisbey1@mail.ru Saturday
351 1973-05-31 gbode0@imgur.com Thursday
352 2003-05-31 lgisbey1@mail.ru Saturday
376 1973-05-31 gbode0@imgur.com Thursday
377 2003-05-31 lgisbey1@mail.ru Saturday
Conexión PostgreSQL cerrada
Obtenga los nombres e ids de correo electrónico de los usuarios añadidos en el año 2019.#
import psycopg2
from psycopg2 import Error
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
# Consulta SQL
sql_query = """
SELECT user_id,
UPPER(user_first_name || ' ' || user_last_name) AS user_name,
user_email_id,
created_ts,
EXTRACT(YEAR FROM created_ts) AS created_year
FROM users
WHERE EXTRACT(YEAR FROM created_ts) = 2019
ORDER BY UPPER(user_first_name || ' ' || user_last_name);
"""
# Ejecutar la consulta
cursor.execute(sql_query)
# Obtener los resultados
results = cursor.fetchall()
# Imprimir los resultados
print("ID de Usuario\t\tNombre de Usuario\t\tCorreo Electrónico\t\tFecha de Creación\t\tAño de Creación")
print("------------------------------------------------------------------------------------------------------------------")
for row in results:
print(f"{row[0]}\t\t{row[1]}\t\t{row[2]}\t{row[3]}\t{int(row[4])}")
except (Exception, psycopg2.Error) as error:
print("Error al conectar a PostgreSQL:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
ID de Usuario Nombre de Usuario Correo Electrónico Fecha de Creación Año de Creación
------------------------------------------------------------------------------------------------------------------
108 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
33 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
58 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
83 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
8 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
133 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
158 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
183 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
208 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
233 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
258 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
283 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
308 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
333 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
358 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
383 CYBIL LISSIMORE clissimore7@pinterest.com 2019-12-09 14:08:30 2019
400 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
325 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
300 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
225 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
150 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
75 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
375 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
250 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
275 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
100 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
50 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
175 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
350 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
125 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
25 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
200 PHYLYS ASLIE paslieo@qq.com 2019-10-01 01:34:28 2019
387 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
112 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
337 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
137 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
162 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
187 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
212 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
362 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
237 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
262 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
287 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
12 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
312 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
37 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
62 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
87 UNA GLAYZER uglayzerb@pinterest.com 2019-09-17 03:24:21 2019
392 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
342 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
17 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
192 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
142 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
117 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
42 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
167 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
317 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
92 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
267 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
367 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
242 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
67 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
292 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
217 YANKEE JELF yjelfg@wufoo.com 2019-09-16 16:09:12 2019
Conexión PostgreSQL cerrada
Obtenga el número de usuarios por género. Utilice la tabla de users para este ejercicio.#
import psycopg2
from psycopg2 import Error
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
# Consulta SQL
sql_query = """
SELECT
CASE
WHEN user_gender = 'M' THEN 'Male'
WHEN user_gender = 'F' THEN 'Female'
ELSE 'Not Specified'
END AS gender,
COUNT(*) AS user_count
FROM
users
GROUP BY
user_gender
ORDER BY
user_count DESC;
"""
# Ejecutar la consulta
cursor.execute(sql_query)
# Obtener los resultados
results = cursor.fetchall()
# Imprimir los resultados
print("Género\t\t\t\t\tNúmero de Usuarios")
print("-----------------------------------------")
for row in results:
print(f"{row[0]}\t\t\t\t\t{row[1]}")
except (Exception, psycopg2.Error) as error:
print("Error al conectar a PostgreSQL:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
Género Número de Usuarios
-----------------------------------------
Female 208
Male 160
Not Specified 32
Conexión PostgreSQL cerrada
Obtenga los 4 últimos dígitos de los ids únicos.#
import psycopg2
from psycopg2 import Error
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
# Consulta SQL
sql_query = """
SELECT
user_id,
COALESCE(user_unique_id, 'Not Specified') AS user_unique_id,
CASE
WHEN user_unique_id IS NULL THEN 'Not Specified'
WHEN LENGTH(REPLACE(user_unique_id, '-', '')) < 9 THEN 'Invalid Unique Id'
ELSE SUBSTRING(REPLACE(user_unique_id, '-', ''), -4)
END AS user_unique_id_last4
FROM
users
ORDER BY
user_id;
"""
# Ejecutar la consulta
cursor.execute(sql_query)
# Obtener los resultados
results = cursor.fetchall()
# Imprimir los resultados
print("ID de Usuario\tID Único\tÚltimos 4 Dígitos del ID Único")
print("--------------------------------------------------------------")
for row in results:
print(f"{row[0]}\t\t{row[1]}\t\t{row[2]}")
except (Exception, psycopg2.Error) as error:
print("Error al conectar a PostgreSQL:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
ID de Usuario ID Único Últimos 4 Dígitos del ID Único
--------------------------------------------------------------
1 88833-8759 888338759
2 262501-029 262501029
3 391-33-2823 391332823
4 1195413-80 119541380
5 471-24-6869 471246869
6 192374-933 192374933
7 749-27-47-52 749274752
8 461-75-4198 461754198
9 892-36-676-2 892366762
10 197-54-1646 197541646
11 232-55-52-58 232555258
12 898-84-336-6 898843366
13 247-95-68-44 247956844
14 415-48-894-3 415488943
15 403-39-5-869 403395869
16 399-83-05-03 399830503
17 607-99-0411 607990411
18 430-01-578-5 430015785
19 571-09-6181 571096181
20 478-32-02-87 478320287
21 Not Specified Not Specified
22 Not Specified Not Specified
23 830-40-5287 830405287
24 778-0845 Invalid Unique Id
25 368-44-4478 368444478
26 88833-8759 888338759
27 262501-029 262501029
28 391-33-2823 391332823
29 1195413-80 119541380
30 471-24-6869 471246869
31 192374-933 192374933
32 749-27-47-52 749274752
33 461-75-4198 461754198
34 892-36-676-2 892366762
35 197-54-1646 197541646
36 232-55-52-58 232555258
37 898-84-336-6 898843366
38 247-95-68-44 247956844
39 415-48-894-3 415488943
40 403-39-5-869 403395869
41 399-83-05-03 399830503
42 607-99-0411 607990411
43 430-01-578-5 430015785
44 571-09-6181 571096181
45 478-32-02-87 478320287
46 Not Specified Not Specified
47 Not Specified Not Specified
48 830-40-5287 830405287
49 778-0845 Invalid Unique Id
50 368-44-4478 368444478
51 88833-8759 888338759
52 262501-029 262501029
53 391-33-2823 391332823
54 1195413-80 119541380
55 471-24-6869 471246869
56 192374-933 192374933
57 749-27-47-52 749274752
58 461-75-4198 461754198
59 892-36-676-2 892366762
60 197-54-1646 197541646
61 232-55-52-58 232555258
62 898-84-336-6 898843366
63 247-95-68-44 247956844
64 415-48-894-3 415488943
65 403-39-5-869 403395869
66 399-83-05-03 399830503
67 607-99-0411 607990411
68 430-01-578-5 430015785
69 571-09-6181 571096181
70 478-32-02-87 478320287
71 Not Specified Not Specified
72 Not Specified Not Specified
73 830-40-5287 830405287
74 778-0845 Invalid Unique Id
75 368-44-4478 368444478
76 88833-8759 888338759
77 262501-029 262501029
78 391-33-2823 391332823
79 1195413-80 119541380
80 471-24-6869 471246869
81 192374-933 192374933
82 749-27-47-52 749274752
83 461-75-4198 461754198
84 892-36-676-2 892366762
85 197-54-1646 197541646
86 232-55-52-58 232555258
87 898-84-336-6 898843366
88 247-95-68-44 247956844
89 415-48-894-3 415488943
90 403-39-5-869 403395869
91 399-83-05-03 399830503
92 607-99-0411 607990411
93 430-01-578-5 430015785
94 571-09-6181 571096181
95 478-32-02-87 478320287
96 Not Specified Not Specified
97 Not Specified Not Specified
98 830-40-5287 830405287
99 778-0845 Invalid Unique Id
100 368-44-4478 368444478
101 88833-8759 888338759
102 262501-029 262501029
103 391-33-2823 391332823
104 1195413-80 119541380
105 471-24-6869 471246869
106 192374-933 192374933
107 749-27-47-52 749274752
108 461-75-4198 461754198
109 892-36-676-2 892366762
110 197-54-1646 197541646
111 232-55-52-58 232555258
112 898-84-336-6 898843366
113 247-95-68-44 247956844
114 415-48-894-3 415488943
115 403-39-5-869 403395869
116 399-83-05-03 399830503
117 607-99-0411 607990411
118 430-01-578-5 430015785
119 571-09-6181 571096181
120 478-32-02-87 478320287
121 Not Specified Not Specified
122 Not Specified Not Specified
123 830-40-5287 830405287
124 778-0845 Invalid Unique Id
125 368-44-4478 368444478
126 88833-8759 888338759
127 262501-029 262501029
128 391-33-2823 391332823
129 1195413-80 119541380
130 471-24-6869 471246869
131 192374-933 192374933
132 749-27-47-52 749274752
133 461-75-4198 461754198
134 892-36-676-2 892366762
135 197-54-1646 197541646
136 232-55-52-58 232555258
137 898-84-336-6 898843366
138 247-95-68-44 247956844
139 415-48-894-3 415488943
140 403-39-5-869 403395869
141 399-83-05-03 399830503
142 607-99-0411 607990411
143 430-01-578-5 430015785
144 571-09-6181 571096181
145 478-32-02-87 478320287
146 Not Specified Not Specified
147 Not Specified Not Specified
148 830-40-5287 830405287
149 778-0845 Invalid Unique Id
150 368-44-4478 368444478
151 88833-8759 888338759
152 262501-029 262501029
153 391-33-2823 391332823
154 1195413-80 119541380
155 471-24-6869 471246869
156 192374-933 192374933
157 749-27-47-52 749274752
158 461-75-4198 461754198
159 892-36-676-2 892366762
160 197-54-1646 197541646
161 232-55-52-58 232555258
162 898-84-336-6 898843366
163 247-95-68-44 247956844
164 415-48-894-3 415488943
165 403-39-5-869 403395869
166 399-83-05-03 399830503
167 607-99-0411 607990411
168 430-01-578-5 430015785
169 571-09-6181 571096181
170 478-32-02-87 478320287
171 Not Specified Not Specified
172 Not Specified Not Specified
173 830-40-5287 830405287
174 778-0845 Invalid Unique Id
175 368-44-4478 368444478
176 88833-8759 888338759
177 262501-029 262501029
178 391-33-2823 391332823
179 1195413-80 119541380
180 471-24-6869 471246869
181 192374-933 192374933
182 749-27-47-52 749274752
183 461-75-4198 461754198
184 892-36-676-2 892366762
185 197-54-1646 197541646
186 232-55-52-58 232555258
187 898-84-336-6 898843366
188 247-95-68-44 247956844
189 415-48-894-3 415488943
190 403-39-5-869 403395869
191 399-83-05-03 399830503
192 607-99-0411 607990411
193 430-01-578-5 430015785
194 571-09-6181 571096181
195 478-32-02-87 478320287
196 Not Specified Not Specified
197 Not Specified Not Specified
198 830-40-5287 830405287
199 778-0845 Invalid Unique Id
200 368-44-4478 368444478
201 88833-8759 888338759
202 262501-029 262501029
203 391-33-2823 391332823
204 1195413-80 119541380
205 471-24-6869 471246869
206 192374-933 192374933
207 749-27-47-52 749274752
208 461-75-4198 461754198
209 892-36-676-2 892366762
210 197-54-1646 197541646
211 232-55-52-58 232555258
212 898-84-336-6 898843366
213 247-95-68-44 247956844
214 415-48-894-3 415488943
215 403-39-5-869 403395869
216 399-83-05-03 399830503
217 607-99-0411 607990411
218 430-01-578-5 430015785
219 571-09-6181 571096181
220 478-32-02-87 478320287
221 Not Specified Not Specified
222 Not Specified Not Specified
223 830-40-5287 830405287
224 778-0845 Invalid Unique Id
225 368-44-4478 368444478
226 88833-8759 888338759
227 262501-029 262501029
228 391-33-2823 391332823
229 1195413-80 119541380
230 471-24-6869 471246869
231 192374-933 192374933
232 749-27-47-52 749274752
233 461-75-4198 461754198
234 892-36-676-2 892366762
235 197-54-1646 197541646
236 232-55-52-58 232555258
237 898-84-336-6 898843366
238 247-95-68-44 247956844
239 415-48-894-3 415488943
240 403-39-5-869 403395869
241 399-83-05-03 399830503
242 607-99-0411 607990411
243 430-01-578-5 430015785
244 571-09-6181 571096181
245 478-32-02-87 478320287
246 Not Specified Not Specified
247 Not Specified Not Specified
248 830-40-5287 830405287
249 778-0845 Invalid Unique Id
250 368-44-4478 368444478
251 88833-8759 888338759
252 262501-029 262501029
253 391-33-2823 391332823
254 1195413-80 119541380
255 471-24-6869 471246869
256 192374-933 192374933
257 749-27-47-52 749274752
258 461-75-4198 461754198
259 892-36-676-2 892366762
260 197-54-1646 197541646
261 232-55-52-58 232555258
262 898-84-336-6 898843366
263 247-95-68-44 247956844
264 415-48-894-3 415488943
265 403-39-5-869 403395869
266 399-83-05-03 399830503
267 607-99-0411 607990411
268 430-01-578-5 430015785
269 571-09-6181 571096181
270 478-32-02-87 478320287
271 Not Specified Not Specified
272 Not Specified Not Specified
273 830-40-5287 830405287
274 778-0845 Invalid Unique Id
275 368-44-4478 368444478
276 88833-8759 888338759
277 262501-029 262501029
278 391-33-2823 391332823
279 1195413-80 119541380
280 471-24-6869 471246869
281 192374-933 192374933
282 749-27-47-52 749274752
283 461-75-4198 461754198
284 892-36-676-2 892366762
285 197-54-1646 197541646
286 232-55-52-58 232555258
287 898-84-336-6 898843366
288 247-95-68-44 247956844
289 415-48-894-3 415488943
290 403-39-5-869 403395869
291 399-83-05-03 399830503
292 607-99-0411 607990411
293 430-01-578-5 430015785
294 571-09-6181 571096181
295 478-32-02-87 478320287
296 Not Specified Not Specified
297 Not Specified Not Specified
298 830-40-5287 830405287
299 778-0845 Invalid Unique Id
300 368-44-4478 368444478
301 88833-8759 888338759
302 262501-029 262501029
303 391-33-2823 391332823
304 1195413-80 119541380
305 471-24-6869 471246869
306 192374-933 192374933
307 749-27-47-52 749274752
308 461-75-4198 461754198
309 892-36-676-2 892366762
310 197-54-1646 197541646
311 232-55-52-58 232555258
312 898-84-336-6 898843366
313 247-95-68-44 247956844
314 415-48-894-3 415488943
315 403-39-5-869 403395869
316 399-83-05-03 399830503
317 607-99-0411 607990411
318 430-01-578-5 430015785
319 571-09-6181 571096181
320 478-32-02-87 478320287
321 Not Specified Not Specified
322 Not Specified Not Specified
323 830-40-5287 830405287
324 778-0845 Invalid Unique Id
325 368-44-4478 368444478
326 88833-8759 888338759
327 262501-029 262501029
328 391-33-2823 391332823
329 1195413-80 119541380
330 471-24-6869 471246869
331 192374-933 192374933
332 749-27-47-52 749274752
333 461-75-4198 461754198
334 892-36-676-2 892366762
335 197-54-1646 197541646
336 232-55-52-58 232555258
337 898-84-336-6 898843366
338 247-95-68-44 247956844
339 415-48-894-3 415488943
340 403-39-5-869 403395869
341 399-83-05-03 399830503
342 607-99-0411 607990411
343 430-01-578-5 430015785
344 571-09-6181 571096181
345 478-32-02-87 478320287
346 Not Specified Not Specified
347 Not Specified Not Specified
348 830-40-5287 830405287
349 778-0845 Invalid Unique Id
350 368-44-4478 368444478
351 88833-8759 888338759
352 262501-029 262501029
353 391-33-2823 391332823
354 1195413-80 119541380
355 471-24-6869 471246869
356 192374-933 192374933
357 749-27-47-52 749274752
358 461-75-4198 461754198
359 892-36-676-2 892366762
360 197-54-1646 197541646
361 232-55-52-58 232555258
362 898-84-336-6 898843366
363 247-95-68-44 247956844
364 415-48-894-3 415488943
365 403-39-5-869 403395869
366 399-83-05-03 399830503
367 607-99-0411 607990411
368 430-01-578-5 430015785
369 571-09-6181 571096181
370 478-32-02-87 478320287
371 Not Specified Not Specified
372 Not Specified Not Specified
373 830-40-5287 830405287
374 778-0845 Invalid Unique Id
375 368-44-4478 368444478
376 88833-8759 888338759
377 262501-029 262501029
378 391-33-2823 391332823
379 1195413-80 119541380
380 471-24-6869 471246869
381 192374-933 192374933
382 749-27-47-52 749274752
383 461-75-4198 461754198
384 892-36-676-2 892366762
385 197-54-1646 197541646
386 232-55-52-58 232555258
387 898-84-336-6 898843366
388 247-95-68-44 247956844
389 415-48-894-3 415488943
390 403-39-5-869 403395869
391 399-83-05-03 399830503
392 607-99-0411 607990411
393 430-01-578-5 430015785
394 571-09-6181 571096181
395 478-32-02-87 478320287
396 Not Specified Not Specified
397 Not Specified Not Specified
398 830-40-5287 830405287
399 778-0845 Invalid Unique Id
400 368-44-4478 368444478
Conexión PostgreSQL cerrada
Obtenga el recuento de usuarios en función del código de país.#
import psycopg2
from psycopg2 import Error
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
# Consulta SQL c
sql_query = """
SELECT
LEFT(SUBSTRING(REGEXP_REPLACE(user_phone_no, '[^0-9]', ''), 1, 3), 2) AS country_code,
COUNT(*) AS user_count
FROM
users
WHERE
user_phone_no IS NOT NULL
GROUP BY
country_code
ORDER BY
LEFT(SUBSTRING(REGEXP_REPLACE(user_phone_no, '[^0-9]', ''), 1, 3), 2) ASC;
"""
# Ejecutar la consulta
cursor.execute(sql_query)
# Obtener los resultados
results = cursor.fetchall()
# Imprimir los resultados
print("Código de País\t\tRecuento de Usuarios")
print("----------------------------------------")
for row in results:
print(f"{row[0]}\t\t\t{row[1]}")
except (Exception, psycopg2.Error) as error:
print("Error al conectar a PostgreSQL:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
Código de País Recuento de Usuarios
----------------------------------------
1 16
22 16
24 16
35 16
37 16
38 16
42 16
48 16
54 16
55 16
59 16
62 48
63 16
7 32
81 16
84 16
86 64
Conexión PostgreSQL cerrada
Importe los datos del precio de Cardano USD (ADA-USD) en su instancia de base de datos Docker, teniendo en cuenta lo explicado durante esta sección. Luego dibuje un gráfico de candlestick para la criptomoneda. En el siguiente link encontrará el CSV de Cardano: Cardano USD (ADA-USD). Describa lo que puede observar en la serie de tiempo. Realice un análisis exploratorio de datos (EDA) para la serie de tiempo.#
### crear tabla
import psycopg2
from psycopg2 import Error
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
# Definir el comando SQL para crear la tabla
create_table_query = '''
CREATE TABLE Cardano_USD (
Date DATE,
Open REAL,
High REAL,
Low REAL,
Close REAL,
Adj_Close REAL,
Volume REAL
);
'''
# Ejecutar el comando SQL para crear la tabla
cursor.execute(create_table_query)
connection.commit()
print("Tabla creada satisfactoriamente.")
except (Exception, Error) as error:
print("Error al conectarse a la base de datos:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión con la base de datos cerrada.")
Error al conectarse a la base de datos: relation "cardano_usd" already exists
Conexión con la base de datos cerrada.
### insertar datos en la tabla
import pandas as pd
import psycopg2
from psycopg2 import Error
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",
password="password",
host="localhost",
port="5432",
database="myname_db")
cursor = connection.cursor()
# Leer el archivo CSV
df = pd.read_csv('https://raw.githubusercontent.com/lihkir/Uninorte/main/AppliedStatisticMS/DataVisualizationRPython/Lectures/Python/PythonDataSets/ADA-USD.csv')
# Iterar sobre las filas del DataFrame y insertarlas en la tabla
for index, row in df.iterrows():
cursor.execute("INSERT INTO cardano_usd (Date, Open, High, Low, Close, Adj_Close, Volume) VALUES (%s, %s, %s, %s, %s, %s, %s)",
(row['Date'], row['Open'], row['High'], row['Low'], row['Close'], row['Adj Close'], row['Volume']))
connection.commit()
print("Datos insertados satisfactoriamente.")
except (Exception, Error) as error:
print("Error al insertar datos en la base de datos:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión con la base de datos cerrada.")
Datos insertados satisfactoriamente.
Conexión con la base de datos cerrada.
### crear grafico
import psycopg2
from psycopg2 import Error
import pandas as pd # Agregar esta línea
import plotly.graph_objects as go
%matplotlib inline
try:
# Establecer la conexión con la base de datos
connection = psycopg2.connect(user="myname_user",password="password", host="localhost", port="5432",database="myname_db")
cursor = connection.cursor()
# Consulta SQL
sql_query = """
SELECT
*
FROM
cardano_usd
;
"""
# Ejecutar la consulta
cursor.execute(sql_query)
# Obtener los resultados
results = cursor.fetchall()
df = pd.DataFrame(results, columns=[desc[0] for desc in cursor.description])
# Imprimir los resultados
print("resultados de la consulta")
except (Exception, psycopg2.Error) as error:
print("Error al conectar a PostgreSQL:", error)
finally:
if connection:
cursor.close()
connection.close()
print("Conexión PostgreSQL cerrada")
# Crear el gráfico de velas
fig = go.Figure(data=[go.Candlestick(x=df['date'], open=df['open'],high=df['high'],low=df['low'],close=df['close'])])
# Personalizar el diseño del gráfico
fig.update_layout(title='Gráfico de Velas de ADA-USD', xaxis_title='Fecha',yaxis_title='Precio',xaxis_rangeslider_visible=False)
# Mostrar el gráfico
fig.show()
resultados de la consulta
Conexión PostgreSQL cerrada